package Componenten;

/**
 *
 * @author Bram Slob en Roderick van Seijen
 */

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageInputStream;

/**
 * 
 * @author bram
 */
public class SpriteSheet {
   BufferedImage[][] sprites;
   int rows;
   int columns;
   
   /**
    * Nieuwe spritesheet
    * @param width breedte van een individuele sprite
    * @param height hoogte van een individuele sprite
    * @param rows aantal rijen sprites
    * @param columns aantal kolommen sprites
    * @param src de bron, de spritesheet
    */
   public SpriteSheet(int width, int height, int rows, int columns, String src) {
      BufferedImage spriteSheet = null;
      try {
          spriteSheet = ImageIO.read(this.getClass().getResourceAsStream(src));
      }
      catch (IOException e){
          System.err.println(e.toString());
      }
      this.rows = rows;
      this.columns = columns;
      sprites = new BufferedImage[rows][columns];
      
      for(int i = 0; i < rows; i++) {
         for(int j = 0; j < columns; j++) {
            sprites[i][j] = spriteSheet.getSubimage(j * width, i * height, width, height);
         }
      }
   }
   
   /**
    * Haal een afbeelding op, op een specifieke plek in de spritesheet
    * @param row    binnen welke rij moet er gezocht worden ?
    * @param column welke kolom moet er gepakt worden in bovenstaande rij ?
    * @return       de afbeelding, op de specifieke plek in de spritesheet
    */
   public BufferedImage getImage(int row, int column){
       return sprites[row][column];  
   }
   
}
